Delivery of significant volumes of data to multiple users, or end hosts, can impose a significant burden on a network. Data can be broadcast over the network and picked up by receivers interested in obtaining the data. However, there may be whole sections of a network in which there is no receiver who wishes to obtain the data so broadcasting data to these network portions wastes network bandwidth. An alternative approach is to send data directly to only those users who have requested the data using unicast methods. However, this can result in large amounts of replicated content being transmitted over the network, which again can cause congestion in the network and affect reliability and Quality of Service (QoS) for other data being transmitted in the network.
Multicasting techniques can be used to distribute content more efficiently in a network by ensuring that content is not replicated in the network until paths to its intended destinations split in the network topology.
The delivery of on-demand content poses a particular problem, however, since multiple users may request the same content at different times and each user may wish to pause or rewind the content stream during playback of the media. Delivery of such on-demand content by unicast enables a user to start viewing a stream at any time and to pause and rewind the stream. However, unicasting of all content is undesirable in most networks since it results in significant replication of the content transmitted over the network and consumes large amounts of network bandwidth.
There are difficulties in using multicast delivery techniques to deliver on-demand content to several end hosts; for example, the multicast stream cannot be paused or rewound for a single user wishing to join the stream at a later stage, as might be the case in uptake of on-demand content. This might result in the new host having to set up and receive a unicast stream for the content, no matter how little ahead in time the multicast stream might be from the start of the piece of content.
According to a further aspect, there is provided a method of receiving at a destination a piece of content from a content delivery network, the method comprising:                requesting the piece of content from a source in the network;        receiving a communication from the network identifying a plurality of multicast groups for delivery of the piece of content;        sending a join request to each of the multicast groups;receiving content from the plurality of multicast groups in a plurality of parallel multicast streams, wherein the content in one stream is time-shifted with respect to content in the at least one other stream so that each stream is delivering a different portion of the piece of content at a particular time.        
The method can enable efficient delivery of content to a user, destination or host over a network. The use of multiple multicast streams makes efficient use of network bandwidth and enables the user to receive the relevant data quickly.
In a particular embodiment, the method further comprises buffering the received content from each of the multicast groups.
Optionally the method further comprises processing the received content to determine an earliest undisplayed portion of the content and outputting the earliest undisplayed portion of the content to a user. Hence the content received from each of the different multicast streams, all of which comes from different times within the content, can be processed at the destination and output in the correct order to the user.
In a particular embodiment, the method further comprises processing the received content to determine whether content received from a multicast group has already been received from another multicast group; if the content has already been received, discarding the duplicated content and leaving the multicast group from which the duplicated content was received. Hence the destination receiver prunes off the various multicast groups as it starts to receive duplicated content.
In some embodiments, the method further comprises receiving from the network a portion of the piece of content in a unicast stream.
In a particular embodiment, requesting the piece of content comprises sending to a component in the network information regarding the capabilities of the receiver, in particular the buffer capacity of the receiver. This information may then be taken into account in allocating the destination to particular multicast streams.
In a particular embodiment, the component in the network comprises the source or a source designated router.
In some embodiments, the plurality of streams are received at a plurality of interfaces.
In a particular embodiment, requesting the piece of content comprises sending to a component in the network information regarding the capabilities of the receiver or destination, optionally sending the buffer capacity of the receiver. This may enable the source or another network component to take the destination capabilities into account when determining how the content is to be delivered.
Optionally, the indication of the capability comprises at least one of an indication of the buffer capacity of the destination and an indication of the number of streams that can be simultaneously received by the destination.
There is provided herein a computer program, computer program product, computer readable medium or logic arranged to implement any of the methods described above.
There is also provided herein a method according to any one described with reference to the figures and apparatus according to any described herein with reference to the figures.
In particular, in all of the aspects described above, the destination may be a host or a host designated router, H-DR, in a multicast network. The host may be the end user terminal associated with an end user or consumer of the content or may be an intermediate device that serves the content to the user's device. For example, the destination may be a hub within a home network that receives the content for streaming to a user's terminal, such as an internet-connected television, a computer, a tablet or a telephone.
Similarly, in all of the aspects described above, the source may be the device that serves the content in the network or may be an intelligent routing component in the network that handles routing of content to destinations. The content may pass through the intelligent routing component, or the component may control other components in the network, such as the source, to implement the methods described herein.
Further, in all of the aspects set out above, the content is optionally video content and/or audio content, in particular on-demand content delivered in response to a request from a user. However, the skilled person will appreciate that the systems and methods described herein could equally be applied to networks for the distribution of data, such as text or image data, or software.
As set out above, aspects of the system described herein create multiple time-staggered multicast streams for the same piece of content. In some embodiments, the source uses intelligent data analytics to decide which hosts should subscribe to which of those (one or more) multicast streams. The source can then trigger subscription of the hosts to the chosen streams. The hosts re-assemble the multiple streams which provide data from different starting points, and leave multicast trees once they no longer receive unreplicated content from that tree. This affects host-to-group membership and also results in better use of network resources by minimising the number of unicast streams in the network for a piece of content. Embodiments of each of the elements set out above are now described in more detail, but an embodiment of a network in which the present system may be implemented is first described.